from langchain_core.tools import tool
from typing import List


@tool
def search_web(query: str) -> str:
    """模拟在网络上搜索信息。当需要查找实时或未知信息时使用。"""
    print(f"---TOOL EXECUTED: Searching web for '{query}'---")
    if "langgraph" in query.lower():
        return "LangGraph是一个用于构建有状态、多角色应用的框架，它将流程建模为图形。它支持人在回路（human-in-the-loop）的交互。"
    return f"关于 '{query}' 的搜索结果未找到。"


@tool
def get_file_content(path: str) -> str:
    """模拟读取一个文件的内容。当用户明确要求读取本地文件时使用。"""
    print(f"---TOOL EXECUTED: Reading file from '{path}'---")
    if path == "./docs/readme.md":
        return "这是README文件。项目的主要目标是实现一个带有人机交互的代理。"
    return f"文件 '{path}' 不存在。"


# 增加一个新工具用于演示
@tool
def get_weather(city: str) -> str:
    """获取指定城市的天气信息。当用户询问天气时使用。"""
    print(f"---TOOL EXECUTED: Getting weather for '{city}'---")
    if city == "北京":
        return "北京今天天气晴朗，温度25度。"
    return f"无法获取 '{city}' 的天气信息。"


# 导出所有工具列表
all_available_tools = [search_web, get_file_content, get_weather]
